package model

import "go-caipu/pkg/services/dto"

type SysApi struct {
	Id          int64           `json:"id" gorm:"primaryKey;comment:主键编码"`
	Category    int64           `json:"category,string"`
	CategoryDto *SysApiCategory `gorm:"foreignKey:category;references:ID"`
	Handle      string          `json:"handle" gorm:"size:128;comment:handle"`
	Title       string          `json:"title" gorm:"size:128;comment:标题"`
	Path        string          `json:"path" gorm:"size:128;comment:地址"`
	Type        string          `json:"type" gorm:"size:16;comment:接口类型"`
	Action      string          `json:"action" gorm:"size:16;comment:请求类型"`
	Remark      string          `gorm:"size:255;" json:"remark"` //描述
	dto.ModelTime
	dto.ControlBy

	//创建人
	CreateUser SysUserBaseInfo `gorm:"foreignKey:CreateBy;references:UserId"`
	//更新人
	UpdateUser SysUserBaseInfo `gorm:"foreignKey:UpdateBy;references:UserId"`
}

func (SysApi) TableName() string {
	return "sys_api"
}

// SysApiCategory 表示 API 分类
type SysApiCategory struct {
	ID       int64             `json:"id,string"`
	Name     string            `json:"name" gorm:"size:128;comment:分类名称"`
	ParentID int64             `json:"parentId,string" gorm:"default:0;comment:父分类 ID"`
	Children []*SysApiCategory `json:"children" gorm:"-"` // 用于存储子分类，不映射到数据库
	// APIs     []*SysApi         `json:"apis" gorm:"-"`     // 用于存储该分类下的 API，不映射到数据库
	dto.ModelTime
	dto.ControlBy
}

func (SysApiCategory) TableName() string {
	return "sys_api_category"
}
